home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / IE7proSetup_2.3.exe / userscripts / FlickrRichEdit.ieuser.js < prev    next >
Text File  |  2007-11-20  |  3KB  |  73 lines

  1. // ==UserScript==
  2. // @name          Flickr Rich Edit
  3. // @description      Adds a simple rich edit interface (Bold, Italic, Blockquote, Link) to any comment textarea on flickr.
  4. // @namespace     http://www.rhyley.org/gm/
  5. // @include       http://*flickr.com/*
  6. // @exclude       http://*flickr.com/messages_write.gne*
  7. // ==/UserScript==
  8.  
  9. //
  10. // By iescripts.org
  11. // Ported from http://userscripts.org/scripts/show/1419
  12. //
  13.  
  14. (function(){
  15.  
  16. textArray = new Array();
  17.  
  18. tagIt = function(tagOpen,tagClose,i) {
  19.     // most of this bit is from http://placenamehere.com/photographica/js_textareas.html
  20.     var ta = textArray[i];
  21.     var st = ta.scrollTop;
  22.         
  23.     if (document.selection) { //IE win
  24.         // code ripped/modified from Meg Hourihan 
  25.         // http://www.oreillynet.com/pub/a/javascript/2001/12/21/js_toolbar.html
  26.         var str = document.selection.createRange().text;
  27.         ta.focus();
  28.         var sel = document.selection.createRange();
  29.         sel.text = tagOpen + str + tagClose;
  30.     } else if (ta.selectionStart | ta.selectionStart == 0) { // Mozzzzzzila relies on builds post bug #88049
  31.         // work around Mozilla Bug #190382
  32.         if (ta.selectionEnd > ta.value.length) { ta.selectionEnd = ta.value.length; }
  33.  
  34.         // decide where to add it and then add it
  35.         var firstPos = ta.selectionStart;
  36.         var secondPos = ta.selectionEnd+tagOpen.length; // cause we're inserting one at a time
  37.  
  38.         ta.value=ta.value.slice(0,firstPos)+tagOpen+ta.value.slice(firstPos);
  39.         ta.value=ta.value.slice(0,secondPos)+tagClose+ta.value.slice(secondPos);
  40.         
  41.         // reset selection & focus... after the first tag and before the second 
  42.         ta.selectionStart = firstPos+tagOpen.length;
  43.         ta.selectionEnd = secondPos;
  44.         //ta.focus();
  45.         ta.scrollTop=st;
  46.     }    
  47. }
  48.  
  49. linkIt = function(i) {
  50.     var myLink = PRO_prompt("Enter URL:","http://");
  51.     if (myLink != null) {
  52.         tagIt('<a href="' +myLink+ '">','</a>', i);
  53.     }
  54. }
  55.  
  56. //textareas = document.evaluate("//textarea",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
  57.  
  58. textareas = document.getElementsByTagName('textarea');
  59.  
  60. for (i=0; i<textareas.length; i++) {
  61.     textArray[i] = textareas[i];
  62.     var accessBar = document.createElement("div");
  63.     accessBar.setAttribute('style','');
  64.     accessBar.innerHTML = "<a href=\"javascript:tagIt('<i>','</i>',"+ i +")\"><i>italic</i></a> " +
  65.         "<a href=\"javascript:tagIt('<b>','</b>',"+ i +")\"><b>bold</b></a> " +
  66.         "<a href=\"javascript:tagIt('<blockquote>','</blockquote>',"+ i +")\">quote</a> " +
  67.         "<a href=\"javascript:linkIt("+i+")\">link</a>";
  68.     
  69.     textArray[i].parentNode.insertBefore(accessBar, textArray[i]);
  70. }
  71.  
  72. })();
  73.